package com.zkthink.ceres.member.dto;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.zkthink.base.entity.Entity;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import lombok.Data;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;

/**
 * <p>
 * 实体类
 * 商城会员信息
 * </p>
 *
 * @author kellen
 * @since 2020-07-12
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Builder
@ApiModel(value = "MemberSaveDTO", description = "商城会员信息")
public class MemberSaveDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 会员微信OPENID
     */
    @ApiModelProperty(value = "会员微信OPENID")
    @Length(max = 100, message = "会员微信OPENID长度不能超过100")
    private String openid;
    /**
     * 会员手机号
     */
    @ApiModelProperty(value = "会员手机号")
    @Length(max = 16, message = "会员手机号长度不能超过16")
    private String phone;
    /**
     * 登录密码
     */
    @ApiModelProperty(value = "登录密码")
    @Length(max = 64, message = "登录密码长度不能超过64")
    private String password;
    /**
     * 余额支付密码
     */
    @ApiModelProperty(value = "余额支付密码")
    @Length(max = 100, message = "余额支付密码长度不能超过100")
    private String payPassword;
    /**
     * 会员昵称
     */
    @ApiModelProperty(value = "会员昵称")
    @Length(max = 20, message = "会员昵称长度不能超过20")
    private String nickname;
    /**
     * 会员头像
     */
    @ApiModelProperty(value = "会员头像")
    @Length(max = 500, message = "会员头像长度不能超过500")
    private String headimg;
    /**
     * 用户类型 1-普通用户 2-商家用户
     */
    @ApiModelProperty(value = "用户类型 1-普通用户 2-商家用户")
    private Boolean userType;
    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    @Length(max = 2, message = "性别长度不能超过2")
    private String sex;
    /**
     * 会员级别
     */
    @ApiModelProperty(value = "会员级别")
    private Integer level;
    /**
     * 默认收货地址
     */
    @ApiModelProperty(value = "默认收货地址")
    private Long addressId;
    /**
     * 会员个性签名
     */
    @ApiModelProperty(value = "会员个性签名")
    @Length(max = 500, message = "会员个性签名长度不能超过500")
    private String remark;
    /**
     * 会员状态0正常 1拉黑
     */
    @ApiModelProperty(value = "会员状态0正常 1拉黑")
    private Boolean status;
    /**
     * 最后一次登录时间
     */
    @ApiModelProperty(value = "最后一次登录时间")
    private LocalDateTime loginTime;
    /**
     * 登录次数
     */
    @ApiModelProperty(value = "登录次数")
    private Integer loginNum;
    /**
     * 是否为分销商 0 否 1 是
     */
    @ApiModelProperty(value = "是否为分销商 0 否 1 是")
    private Boolean isDistribute;
    /**
     * 第一个上级
     */
    @ApiModelProperty(value = "第一个上级")
    private Long firstLeader;
    /**
     * 第二个上级
     */
    @ApiModelProperty(value = "第二个上级")
    private Long secondLeader;
    /**
     * 第三个上级
     */
    @ApiModelProperty(value = "第三个上级")
    private Long thirdLeader;
    /**
     * 消费总额
     */
    @ApiModelProperty(value = "消费总额")
    @NotNull(message = "消费总额不能为空")
    private Long expendAmount;
    /**
     * 购买次数
     */
    @ApiModelProperty(value = "购买次数")
    @NotNull(message = "购买次数不能为空")
    private Integer buyTimes;
    /**
     * 最近一次购买时间
     */
    @ApiModelProperty(value = "最近一次购买时间")
    private LocalDateTime lastBuyTime;

}
